import WxRequest from 'mina-request'
import { getStorage, clearStorage } from './storage'
import { toast, modal } from './extendApi'
import { env } from './env'


const instance = new WxRequest({
  // baseURL: 'https://gmall-prod.atguigu.cn/mall-api',
  baseURL:env.baseURL,
  timeout: 15000,
})

// 添加请求拦截器
instance.interceptors.request = (config) => {

  // 先判断本地是否存在访问令牌 token
  const token = getStorage('token')

  // 如果存在 token，就需要在请求头中添加 token 字段
  if (token) {
    config.header['token'] = token
  }

  // 在发送请求之前做些什么
  return config
}

// 添加响应
instance.interceptors.response = async (response) => {

  // 从 response 中解构 isSuccess
  const { isSuccess, data } = response

  if (!isSuccess) {
    toast({
      title: '网络异常请重试',
      icon: 'error'
    })

    return Promise.reject(response)
  }

  switch (data.code) {
    case 200:
      return data;
    case 208:
      const res = await modal({
        content: '鉴权失败，请重新登录',
        showCancel: false // 不显示取消按钮
      })

      if (res) {
        // 清除之前失效的 token ，同时要清除本地存储的全部信息
        clearStorage()

        wx.navigateTo({
          url: '/pages/login/login'
        })
      }
      return Promise.reject(response)

    // 其他异常：
    default:
      toast({
        title: '程序出现异常，请联系客服或稍后重试！'
      })
      return Promise.reject(response)
  }


  return response
}

export default instance